nginx部署vue的dist文件

  1. 下载
http://nginx.org/en/download.html
  1. 下载的不用安装,可以直接点击 nginx.exe 文件打开,也可以通过 cmd 打开 nginx
// cd到nginx所在目录,启动nginx
start nginx 
 
// 修改配置后重新加载生效
nginx -s reload
 
// 重新打开日志文件
nginx -s reopen
 
// 测试nginx配置文件是否正确
nginx -t -c /path/to/nginx.conf
 
// 快速停止nginx
nginx -s stop
 
// 完整有序的停止nginx
nginx -s quit

//结束:
taskkill /f /t /im nginx.exe
  1. 修改配置文件 D:\nginx-1.18.0\conf\nginx.conf

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       8888; #监听端口
        server_name  localhost; #监听的域名
        location / {
            root   dist; # vue打包的文件普遍是dist 文件,此文件夹与conf文件夹同一级别
            index  index.html index.htm;
            # 需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
            try_files $uri $uri/ @router;
        }
        # 对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
        # 因此需要rewrite到index.html中,然后交给路由在处理请求资源
        location @router {
            rewrite ^.*$ /index.html last;
        }
         # 将localhost:8888 -> localhost:3000 /api 根据 vue 配置文件进行相应修改
        location ~ ^/api[/\w*]*$ {
            proxy_pass http://localhost:3000;
        }

    }
}
  1. vue.config.js 的配置
module.exports = {
  publicPath: process.env.VUE_APP_ENV === 'production'
    ? './'
    : './',
  devServer: {
    'proxy': {
      '/api': {
        'target': 'http://localhost:3000',
        'changeOrigin': true,
        'pathRewrite': {
          '^/api': ''
        }
      }
    },
    'hot': true,
    'port': 8082,
    'open': true
  },
  productionSourceMap: false
}
  1. 配置之后不知道因为什么原因,在后端的接口里面需要添加 /api
    比如:请求的本来是 /user 要变成 /api/user
  2. 又因为我的接口是用 node 自己写的,不分测试部分和生产部分
    所以我的 vue.config.js 需要修改一下:
module.exports = {
  publicPath: process.env.VUE_APP_ENV === 'production'
    ? './'
    : './',
  devServer: {
    'proxy': {
      '/api': {
        'target': 'http://localhost:3000',
        'changeOrigin': true,
        'pathRewrite': {
          '^/api': '/api' // 这里修改了,由 " 改为了 '/api'
        }
      }
    },
    'hot': true,
    'port': 8082,
    'open': true
  },
  productionSourceMap: false
}
要在nginx配置vue dist文件访问,您需要将nginx配置修改为以下内容: ``` server { listen 80; server_name yourdomain.com; # 静态文件目录,这里指向vue打包后的dist目录 root /var/www/yourdomain.com/dist; # index.html作为默认页面 index index.html; # 处理静态文件的请求 location / { try_files $uri $uri/ /index.html; } } ``` 上面的代码将静态文件目录设置为`/var/www/yourdomain.com/dist`,这是您打包Vue项目后生成的dist目录。此外,我们还使用`try_files`指令来处理静态文件请求,这将使nginx尝试查找请求的文件,如果找不到,则重定向到index.html。 接下来,让我们来看看如何在nginx配置axios跨域。 ``` server { listen 80; server_name yourdomain.com; # 静态文件目录,这里指向vue打包后的dist目录 root /var/www/yourdomain.com/dist; # index.html作为默认页面 index index.html; # 处理静态文件的请求 location / { try_files $uri $uri/ /index.html; } # 处理跨域请求 location /api/ { proxy_pass http://your.api.server; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, DELETE, PUT'; add_header Access-Control-Allow-Headers 'Content-Type, Authorization, Accept'; } } ``` 上面的代码将/api/路径下的所有请求代理到http://your.api.server,并添加了一些跨域响应头,包括`Access-Control-Allow-Origin`、`Access-Control-Allow-Methods`和`Access-Control-Allow-Headers`。 注意,如果您的Vue应用程序使用了Vue Router,那么您需要将router的模式设置为history模式,以便nginx正确地处理路由。您可以在Vue Router中进行如下配置: ``` const router = new VueRouter({ mode: 'history', routes: [...] }) ``` 希望这些信息能够帮助您!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值